//
//  SImpleTabBarViewComtroller.swift
//  test-ios
//
//  Created by wyz5204 on 2023/5/27.
//

import UIKit
// 做一个简单的页面，分为 消息，项目，应用中心，文档，我的
class RDMainTabBarViewComtroller: SimpleTabBarController<RDMainViewModel> {
    
    override func createViewModel() -> RDMainViewModel {
        return RDMainViewModel()
    }
   
    override func initView(_ contentView: UIView) {
        // 初始化
        var vcs = [UIViewController]()
        // 添加消息
        let message = RDMessageViewController(viewModel: RDMessageViewModel()).then({ cv in
            cv.tabBarItem = UITabBarItem.init(title: "消息", image: UIImage.init(named: "icon_button_github"), tag: 1)
        })
        vcs.append(RDNavigatorViewController(rootViewController: message))
        // 添加项目
        let project = RDProjectsViewController(viewModel: RDProjectViewModel()).then({ cv in
            cv.tabBarItem = UITabBarItem.init(title: "项目", image: UIImage.init(named: "icon_button_github"), tag: 2)
        })
        vcs.append(RDNavigatorViewController(rootViewController: project))
        // 添加应用中心
        let app = RDAppCenterViewController(viewModel: RDAppCenterViewModel()).then({ cv in
            cv.tabBarItem = UITabBarItem.init(title: "应用", image: UIImage.init(named: "icon_button_github"), tag: 3)
        })
        vcs.append(RDNavigatorViewController(rootViewController: app))
        // 添加文档
        let document = RDDocumentsViewController(viewModel: RDDocumentsViewModel()).then({ cv in
            cv.tabBarItem = UITabBarItem.init(title: "文档", image: UIImage.init(named: "icon_button_github"), tag: 4)
        })
        vcs.append(RDNavigatorViewController(rootViewController: document))
        // 添加我的
        let mine = RDMineViewController(viewModel: RDMineViewModel()).then({ cv in
            cv.tabBarItem = UITabBarItem.init(title: "我的", image: UIImage.init(named: "icon_button_github"), tag: 5)
        })
        vcs.append(RDNavigatorViewController(rootViewController: mine))
        
        self.viewControllers = vcs
        self.selectedIndex = 0
        self.tabBar.backgroundColor = .white
        
        // 更新颜色 批量更新 我认为不合适 备注
//        self.viewControllers?.forEach({ vc in
//            guard let navigationController = vc as? UINavigationController else {
//                return
//            }
//            navigationController.navigationBar.backgroundColor = .red
//            navigationController.navigationBar.barTintColor = .red
//        })
    }
    override func bindViewModel(_ viewModel: RDMainViewModel) {
       
    }
    
    override func updateView() {
        viewModel.updateOrgList()
    }
    
}


class RDMainViewModel : SimpleViewModel {
    
    let common = RDPRModel.shared
    let user = RDDBModel.shared()
    
    
    override init() {
        super.init()
        self.registerObserver(selector: #selector(updateOrgList), name: RDNotification.getOrgList)
            
        self.registerObserver(selector: #selector(updateDefaultOrg), name: RDNotification.updateOrg)
    }
    
    @objc func updateOrgList(){
        // 进行数据的同步，请求当前用户的组织情况
        RDNetModel.shared.getOrgList().subscribe(onSuccess: {[weak self] orgJson in
            // 进行组织的保存
            print("updateOrgList" , orgJson)
            guard let data = orgJson.data else {
                // 提示 这里使用toast
                self?.showToast("组织列表 请求失败 \(orgJson.msg)")
                return
            }
            // 进行组织的更新 保存到本地的数据库
            self?.user.saveOrgs(data)
            // 保存成功后进行组织的通知 ， 通知其他的UI进行组织的更新
            // 获取本地暂存的组织id ，判断是否存在，如果存在则，不做任何改变，反之则通知其
            self?.updateDefaultOrg()
        }, onFailure: { error in
            // 提示 这里使用toast
            self.showToast("组织列表 请求失败，请重试")
            print(error)
        }).disposed(by: rx.disposeBag)
    }
    
    @objc func updateDefaultOrg(){
        print("orgChange >>>updateDefaultOrg")
        let defOrg = user.getDefaultOrg()
        print("PostMessage \(defOrg)")
        postMessage(RDNotification.defaultOrg, object: defOrg)
    }
    
}
